<html>
	<head>
		<script type="text/javascript">
			window.onload= function () { 
				var stooge = { "first-name": "Jerome", "last-name": "Howard" };

				alert(stooge["first-name"]); // "Jerome"

				// 如果 你 尝试 检索 一个 并不 存在 的 成员 属 性的 值， 将 返回 undefined。 
				alert(stooge["middle-name"]); // undefined 
				alert(stooge["FIRST-NAME"]); // undefined  【键名区分大小写】

				// || 运算符 可以 用来 填充 默认值： 
				var middle = stooge["middle-name"] || "(none)"; 
				alert(middle);

				// 尝试 从 undefined 的 成员 属性 中 取值 将会 导致 TypeError 异常。 这时 可以 通过&& 运算符 来 避免 错误。 因为如果stooge.equipment是undefined后面的&&就会短路，结束后续运算，从而避免TypeError异常。
				alert(stooge.equipment); // undefined 
				// alert(stooge.equipment.model); // throw "TypeError"     【不会弹框，在控制台报错】
				alert(stooge.equipment && stooge.equipment.model); // undefined  

				// 道格拉斯•克罗克福德 (Douglas Crockford). JavaScript语言精粹(修订版) (Kindle 位置 497-506). 电子工业出版社. Kindle 版本. 
			}
		</script>
	</head>
	<body>
		
	</body>
</html>